package com.campusbackend.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 队伍详情响应VO
 * </p>
 *
 * @author yezi
 * @since 2025-07-26
 */
@Data
@Schema(name = "TeamDetailVO", description = "队伍详情响应VO")
public class TeamDetailVO {

    @Schema(description = "队伍ID")
    private Long teamId;

    @Schema(description = "队伍名称")
    private String teamName;

    @Schema(description = "队伍编号")
    private String teamCode;

    @Schema(description = "队伍类型")
    private String teamType;

    @Schema(description = "团队介绍")
    private String teamIntro;

    @Schema(description = "当前参与的比赛")
    private String currentCompetition;

    @Schema(description = "获奖情况")
    private String awardInfo;

    @Schema(description = "最大成员数量")
    private Integer maxMembers;

    @Schema(description = "当前成员数量")
    private Integer currentMembers;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "指导老师信息")
    private InstructorInfo instructor;

    @Schema(description = "队伍成员列表")
    private List<MemberInfo> members;

    @Schema(description = "入驻专家列表")
    private List<ExpertInfo> experts;

    /**
     * 指导老师信息
     */
    @Data
    @Schema(name = "InstructorInfo", description = "指导老师信息")
    public static class InstructorInfo {
        @Schema(description = "教师ID")
        private Long teacherId;

        @Schema(description = "真实姓名")
        private String realName;

        @Schema(description = "头像URL")
        private String avatar;

        @Schema(description = "专业职位")
        private String professionalTitle;

        @Schema(description = "邮箱")
        private String email;

        @Schema(description = "手机号")
        private String phone;
    }

    /**
     * 队伍成员信息
     */
    @Data
    @Schema(name = "MemberInfo", description = "队伍成员信息")
    public static class MemberInfo {
        @Schema(description = "学生ID")
        private Long studentId;

        @Schema(description = "学号")
        private String studentNumber;

        @Schema(description = "真实姓名")
        private String realName;

        @Schema(description = "头像URL")
        private String avatar;

        @Schema(description = "学院")
        private String college;

        @Schema(description = "队员角色")
        private String memberRole;

        @Schema(description = "队员评分（满分20分）")
        private BigDecimal score;

        @Schema(description = "加入时间")
        private LocalDateTime joinTime;
    }

    /**
     * 入驻专家信息
     */
    @Data
    @Schema(name = "ExpertInfo", description = "入驻专家信息")
    public static class ExpertInfo {
        @Schema(description = "专家ID（教师ID）")
        private Long expertId;

        @Schema(description = "真实姓名")
        private String realName;

        @Schema(description = "头像URL")
        private String avatar;

        @Schema(description = "专业职位")
        private String professionalTitle;

        @Schema(description = "邮箱")
        private String email;

        @Schema(description = "入驻状态")
        private Byte joinStatus;

        @Schema(description = "入驻时间")
        private LocalDateTime joinTime;
    }
} 